﻿using System;
using System.Collections.Generic;

using System.Text;
using Microsoft.Maui.Graphics;

namespace Comet.Styles.Material
{
	public partial class ColorPalette
	{
		public string Name { get; set; }
		public Color P50 { get; set; }
		public Color PD50 { get; set; }
		public Color P100 { get; set; }
		public Color PD100 { get; set; }
		public Color P200 { get; set; }
		public Color PD200 { get; set; }
		public Color P300 { get; set; }
		public Color PD300 { get; set; }
		public Color P400 { get; set; }
		public Color PD400 { get; set; }
		public Color P500 { get; set; }
		public Color PD500 { get; set; }
		public Color P600 { get; set; }
		public Color PD600 { get; set; }
		public Color P700 { get; set; }
		public Color PD700 { get; set; }
		public Color P800 { get; set; }
		public Color PD800 { get; set; }
		public Color P900 { get; set; }
		public Color PD900 { get; set; }
		public Color A100 { get; set; }
		public Color AD100 { get; set; }
		public Color A200 { get; set; }
		public Color AD200 { get; set; }
		public Color A400 { get; set; }
		public Color AD400 { get; set; }
		public Color A700 { get; set; }
		public Color AD700 { get; set; }

		public static ColorPalette Red { get; } = new ColorPalette
		{
			Name = "Red",
			P50 = Color.FromArgb("#FFEBEE"),
			P100 = Color.FromArgb("#FFCDD2"),
			P200 = Color.FromArgb("#EF9A9A"),
			P300 = Color.FromArgb("#E57373"),
			P400 = Color.FromArgb("#EF5350"),
			P500 = Color.FromArgb("#F44336"),
			P600 = Color.FromArgb("#E53935"),
			P700 = Color.FromArgb("#D32F2F"),
			P800 = Color.FromArgb("#C62828"),
			P900 = Color.FromArgb("#B71C1C"),
			A100 = Color.FromArgb("#FF8A80"),
			A200 = Color.FromArgb("#FF5252"),
			A400 = Color.FromArgb("#FF1744"),
			A700 = Color.FromArgb("#D50000"),
			PD50 = Colors.Black,
			PD100 = Colors.Black,
			PD200 = Colors.Black,
			PD300 = Colors.Black,
			PD400 = Colors.White,
			PD500 = Colors.White,
			PD600 = Colors.White,
			PD700 = Colors.White,
			PD800 = Colors.White,
			PD900 = Colors.White,
			AD100 = Colors.Black,
			AD200 = Colors.White,
			AD400 = Colors.White,
			AD700 = Colors.White,
		};

		public static ColorPalette Pink { get; } = new ColorPalette
		{
			Name = "Pink",
			P50 = Color.FromArgb("#FCE4EC"),
			P100 = Color.FromArgb("#F8BBD0"),
			P200 = Color.FromArgb("#F48FB1"),
			P300 = Color.FromArgb("#F06292"),
			P400 = Color.FromArgb("#EC407A"),
			P500 = Color.FromArgb("#E91E63"),
			P600 = Color.FromArgb("#D81B60"),
			P700 = Color.FromArgb("#C2185B"),
			P800 = Color.FromArgb("#AD1457"),
			P900 = Color.FromArgb("#880E4F"),
			A100 = Color.FromArgb("#FF80AB"),
			A200 = Color.FromArgb("#FF4081"),
			A400 = Color.FromArgb("#F50057"),
			A700 = Color.FromArgb("#C51162"),
			PD50 = Colors.Black,
			PD100 = Colors.Black,
			PD200 = Colors.Black,
			PD300 = Colors.Black,
			PD400 = Colors.White,
			PD500 = Colors.White,
			PD600 = Colors.White,
			PD700 = Colors.White,
			PD800 = Colors.White,
			PD900 = Colors.White,
			AD100 = Colors.Black,
			AD200 = Colors.White,
			AD400 = Colors.White,
			AD700 = Colors.White,
		};

		public static ColorPalette Purple { get; } = new ColorPalette
		{
			Name = "Purple",
			P50 = Color.FromArgb("#F3E5F5"),
			P100 = Color.FromArgb("#E1BEE7"),
			P200 = Color.FromArgb("#CE93D8"),
			P300 = Color.FromArgb("#BA68C8"),
			P400 = Color.FromArgb("#AB47BC"),
			P500 = Color.FromArgb("#9C27B0"),
			P600 = Color.FromArgb("#8E24AA"),
			P700 = Color.FromArgb("#7B1FA2"),
			P800 = Color.FromArgb("#6A1B9A"),
			P900 = Color.FromArgb("#4A148C"),
			A100 = Color.FromArgb("#EA80FC"),
			A200 = Color.FromArgb("#E040FB"),
			A400 = Color.FromArgb("#D500F9"),
			A700 = Color.FromArgb("#AA00FF"),
			PD50 = Colors.Black,
			PD100 = Colors.Black,
			PD200 = Colors.Black,
			PD300 = Colors.White,
			PD400 = Colors.White,
			PD500 = Colors.White,
			PD600 = Colors.White,
			PD700 = Colors.White,
			PD800 = Colors.White,
			PD900 = Colors.White,
			AD100 = Colors.Black,
			AD200 = Colors.White,
			AD400 = Colors.White,
			AD700 = Colors.White,
		};


		public static ColorPalette DeepPurple { get; } = new ColorPalette
		{
			Name = "Deep Purple",
			P50 = Color.FromArgb("#EDE7F6"),
			P100 = Color.FromArgb("#D1C4E9"),
			P200 = Color.FromArgb("#B39DDB"),
			P300 = Color.FromArgb("#9575CD"),
			P400 = Color.FromArgb("#7E57C2"),
			P500 = Color.FromArgb("#673AB7"),
			P600 = Color.FromArgb("#5E35B1"),
			P700 = Color.FromArgb("#512DA8"),
			P800 = Color.FromArgb("#4527A0"),
			P900 = Color.FromArgb("#311B92"),
			A100 = Color.FromArgb("#B388FF"),
			A200 = Color.FromArgb("#7C4DFF"),
			A400 = Color.FromArgb("#651FFF"),
			A700 = Color.FromArgb("#6200EA"),
			PD50 = Colors.Black,
			PD100 = Colors.Black,
			PD200 = Colors.Black,
			PD300 = Colors.White,
			PD400 = Colors.White,
			PD500 = Colors.White,
			PD600 = Colors.White,
			PD700 = Colors.White,
			PD800 = Colors.White,
			PD900 = Colors.White,
			AD100 = Colors.Black,
			AD200 = Colors.White,
			AD400 = Colors.White,
			AD700 = Colors.White,
		};
		public static ColorPalette Indigo { get; } = new ColorPalette
		{
			Name = "Indigo",
			P50 = Color.FromArgb("#E8EAF6"),
			P100 = Color.FromArgb("#C5CAE9"),
			P200 = Color.FromArgb("#9FA8DA"),
			P300 = Color.FromArgb("#7986CB"),
			P400 = Color.FromArgb("#5C6BC0"),
			P500 = Color.FromArgb("#3F51B5"),
			P600 = Color.FromArgb("#3949AB"),
			P700 = Color.FromArgb("#303F9F"),
			P800 = Color.FromArgb("#283593"),
			P900 = Color.FromArgb("#1A237E"),
			A100 = Color.FromArgb("#8C9EFF"),
			A200 = Color.FromArgb("#536DFE"),
			A400 = Color.FromArgb("#3D5AFE"),
			A700 = Color.FromArgb("#304FFE"),
			PD50 = Colors.Black,
			PD100 = Colors.Black,
			PD200 = Colors.Black,
			PD300 = Colors.White,
			PD400 = Colors.White,
			PD500 = Colors.White,
			PD600 = Colors.White,
			PD700 = Colors.White,
			PD800 = Colors.White,
			PD900 = Colors.White,
			AD100 = Colors.Black,
			AD200 = Colors.White,
			AD400 = Colors.White,
			AD700 = Colors.White,
		};
		public static ColorPalette Blue { get; } = new ColorPalette
		{
			Name = "Blue",
			P50 = Color.FromArgb("#E3F2FD"),
			P100 = Color.FromArgb("#BBDEFB"),
			P200 = Color.FromArgb("#90CAF9"),
			P300 = Color.FromArgb("#64B5F6"),
			P400 = Color.FromArgb("#42A5F5"),
			P500 = Color.FromArgb("#2196F3"),
			P600 = Color.FromArgb("#1E88E5"),
			P700 = Color.FromArgb("#1976D2"),
			P800 = Color.FromArgb("#1565C0"),
			P900 = Color.FromArgb("#0D47A1"),
			A100 = Color.FromArgb("#82B1FF"),
			A200 = Color.FromArgb("#448AFF"),
			A400 = Color.FromArgb("#2979FF"),
			A700 = Color.FromArgb("#2962FF"),
			PD50 = Colors.Black,
			PD100 = Colors.Black,
			PD200 = Colors.Black,
			PD300 = Colors.Black,
			PD400 = Colors.Black,
			PD500 = Colors.Black,
			PD600 = Colors.White,
			PD700 = Colors.White,
			PD800 = Colors.White,
			PD900 = Colors.White,
			AD100 = Colors.Black,
			AD200 = Colors.White,
			AD400 = Colors.White,
			AD700 = Colors.White,
		};
		public static ColorPalette LightBlue { get; } = new ColorPalette
		{
			Name = "Light Blue",
			P50 = Color.FromArgb("#E1F5FE"),
			P100 = Color.FromArgb("#B3E5FC"),
			P200 = Color.FromArgb("#81D4FA"),
			P300 = Color.FromArgb("#4FC3F7"),
			P400 = Color.FromArgb("#29B6F6"),
			P500 = Color.FromArgb("#03A9F4"),
			P600 = Color.FromArgb("#039BE5"),
			P700 = Color.FromArgb("#0288D1"),
			P800 = Color.FromArgb("#0277BD"),
			P900 = Color.FromArgb("#01579B"),
			A100 = Color.FromArgb("#80D8FF"),
			A200 = Color.FromArgb("#40C4FF"),
			A400 = Color.FromArgb("#00B0FF"),
			A700 = Color.FromArgb("#0091EA"),
			PD50 = Colors.Black,
			PD100 = Colors.Black,
			PD200 = Colors.Black,
			PD300 = Colors.Black,
			PD400 = Colors.Black,
			PD500 = Colors.Black,
			PD600 = Colors.Black,
			PD700 = Colors.White,
			PD800 = Colors.White,
			PD900 = Colors.White,
			AD100 = Colors.Black,
			AD200 = Colors.Black,
			AD400 = Colors.Black,
			AD700 = Colors.White,
		};
		public static ColorPalette Cyan { get; } = new ColorPalette
		{
			Name = "Cyan",
			P50 = Color.FromArgb("#E0F7FA"),
			P100 = Color.FromArgb("#B2EBF2"),
			P200 = Color.FromArgb("#80DEEA"),
			P300 = Color.FromArgb("#4DD0E1"),
			P400 = Color.FromArgb("#26C6DA"),
			P500 = Color.FromArgb("#00BCD4"),
			P600 = Color.FromArgb("#00ACC1"),
			P700 = Color.FromArgb("#0097A7"),
			P800 = Color.FromArgb("#00838F"),
			P900 = Color.FromArgb("#006064"),
			A100 = Color.FromArgb("#84FFFF"),
			A200 = Color.FromArgb("#18FFFF"),
			A400 = Color.FromArgb("#00E5FF"),
			A700 = Color.FromArgb("#00B8D4"),
			PD50 = Colors.Black,
			PD100 = Colors.Black,
			PD200 = Colors.Black,
			PD300 = Colors.Black,
			PD400 = Colors.Black,
			PD500 = Colors.Black,
			PD600 = Colors.Black,
			PD700 = Colors.White,
			PD800 = Colors.White,
			PD900 = Colors.White,
			AD100 = Colors.Black,
			AD200 = Colors.Black,
			AD400 = Colors.Black,
			AD700 = Colors.Black,
		};
		public static ColorPalette Teal { get; } = new ColorPalette
		{
			Name = "Teal",
			P50 = Color.FromArgb("#E0F2F1"),
			P100 = Color.FromArgb("#B2DFDB"),
			P200 = Color.FromArgb("#80CBC4"),
			P300 = Color.FromArgb("#4DB6AC"),
			P400 = Color.FromArgb("#26A69A"),
			P500 = Color.FromArgb("#009688"),
			P600 = Color.FromArgb("#00897B"),
			P700 = Color.FromArgb("#00796B"),
			P800 = Color.FromArgb("#00695C"),
			P900 = Color.FromArgb("#004D40"),
			A100 = Color.FromArgb("#A7FFEB"),
			A200 = Color.FromArgb("#64FFDA"),
			A400 = Color.FromArgb("#1DE9B6"),
			A700 = Color.FromArgb("#00BFA5"),
			PD50 = Colors.Black,
			PD100 = Colors.Black,
			PD200 = Colors.Black,
			PD300 = Colors.Black,
			PD400 = Colors.Black,
			PD500 = Colors.White,
			PD600 = Colors.White,
			PD700 = Colors.White,
			PD800 = Colors.White,
			PD900 = Colors.White,
			AD100 = Colors.Black,
			AD200 = Colors.Black,
			AD400 = Colors.Black,
			AD700 = Colors.Black,
		};
		public static ColorPalette Green { get; } = new ColorPalette
		{
			Name = "Green",
			P50 = Color.FromArgb("#E8F5E9"),
			P100 = Color.FromArgb("#C8E6C9"),
			P200 = Color.FromArgb("#A5D6A7"),
			P300 = Color.FromArgb("#81C784"),
			P400 = Color.FromArgb("#66BB6A"),
			P500 = Color.FromArgb("#4CAF50"),
			P600 = Color.FromArgb("#43A047"),
			P700 = Color.FromArgb("#388E3C"),
			P800 = Color.FromArgb("#2E7D32"),
			P900 = Color.FromArgb("#1B5E20"),
			A100 = Color.FromArgb("#B9F6CA"),
			A200 = Color.FromArgb("#69F0AE"),
			A400 = Color.FromArgb("#00E676"),
			A700 = Color.FromArgb("#00C853"),
			PD50 = Colors.Black,
			PD100 = Colors.Black,
			PD200 = Colors.Black,
			PD300 = Colors.Black,
			PD400 = Colors.Black,
			PD500 = Colors.Black,
			PD600 = Colors.White,
			PD700 = Colors.White,
			PD800 = Colors.White,
			PD900 = Colors.White,
			AD100 = Colors.Black,
			AD200 = Colors.Black,
			AD400 = Colors.Black,
			AD700 = Colors.Black,
		};
		public static ColorPalette LightGreen { get; } = new ColorPalette
		{
			Name = "Light Green",
			P50 = Color.FromArgb("#F1F8E9"),
			P100 = Color.FromArgb("#DCEDC8"),
			P200 = Color.FromArgb("#C5E1A5"),
			P300 = Color.FromArgb("#C5E1A5"),
			P400 = Color.FromArgb("#9CCC65"),
			P500 = Color.FromArgb("#8BC34A"),
			P600 = Color.FromArgb("#7CB342"),
			P700 = Color.FromArgb("#689F38"),
			P800 = Color.FromArgb("#558B2F"),
			P900 = Color.FromArgb("#33691E"),
			A100 = Color.FromArgb("#CCFF90"),
			A200 = Color.FromArgb("#B2FF59"),
			A400 = Color.FromArgb("#76FF03"),
			A700 = Color.FromArgb("#64DD17"),
			PD50 = Colors.Black,
			PD100 = Colors.Black,
			PD200 = Colors.Black,
			PD300 = Colors.Black,
			PD400 = Colors.Black,
			PD500 = Colors.Black,
			PD600 = Colors.Black,
			PD700 = Colors.Black,
			PD800 = Colors.White,
			PD900 = Colors.White,
			AD100 = Colors.Black,
			AD200 = Colors.Black,
			AD400 = Colors.Black,
			AD700 = Colors.Black,
		};

		public static ColorPalette Lime { get; } = new ColorPalette
		{
			Name = "Lime",
			P50 = Color.FromArgb("#F9FBE7"),
			P100 = Color.FromArgb("#F0F4C3"),
			P200 = Color.FromArgb("#E6EE9C"),
			P300 = Color.FromArgb("#DCE775"),
			P400 = Color.FromArgb("#D4E157"),
			P500 = Color.FromArgb("#CDDC39"),
			P600 = Color.FromArgb("#C0CA33"),
			P700 = Color.FromArgb("#AFB42B"),
			P800 = Color.FromArgb("#9E9D24"),
			P900 = Color.FromArgb("#827717"),
			A100 = Color.FromArgb("#F4FF81"),
			A200 = Color.FromArgb("#EEFF41"),
			A400 = Color.FromArgb("#C6FF00"),
			A700 = Color.FromArgb("#AEEA00"),
			PD50 = Colors.Black,
			PD100 = Colors.Black,
			PD200 = Colors.Black,
			PD300 = Colors.Black,
			PD400 = Colors.Black,
			PD500 = Colors.Black,
			PD600 = Colors.Black,
			PD700 = Colors.Black,
			PD800 = Colors.Black,
			PD900 = Colors.White,
			AD100 = Colors.Black,
			AD200 = Colors.Black,
			AD400 = Colors.Black,
			AD700 = Colors.Black,
		};

		public static ColorPalette Yellow { get; } = new ColorPalette
		{
			Name = "Yellow",
			P50 = Color.FromArgb("#FFFDE7"),
			P100 = Color.FromArgb("#FFF9C4"),
			P200 = Color.FromArgb("#FFF59D"),
			P300 = Color.FromArgb("#FFF176"),
			P400 = Color.FromArgb("#FFEE58"),
			P500 = Color.FromArgb("#FFEB3B"),
			P600 = Color.FromArgb("#FDD835"),
			P700 = Color.FromArgb("#FBC02D"),
			P800 = Color.FromArgb("#F9A825"),
			P900 = Color.FromArgb("#F57F17"),
			A100 = Color.FromArgb("#FFFF8D"),
			A200 = Color.FromArgb("#FFFF00"),
			A400 = Color.FromArgb("#FFEA00"),
			A700 = Color.FromArgb("#FFD600"),
			PD50 = Colors.Black,
			PD100 = Colors.Black,
			PD200 = Colors.Black,
			PD300 = Colors.Black,
			PD400 = Colors.Black,
			PD500 = Colors.Black,
			PD600 = Colors.Black,
			PD700 = Colors.Black,
			PD800 = Colors.Black,
			PD900 = Colors.Black,
			AD100 = Colors.Black,
			AD200 = Colors.Black,
			AD400 = Colors.Black,
			AD700 = Colors.Black,
		};

		public static ColorPalette Amber { get; } = new ColorPalette
		{
			Name = "Amber",
			P50 = Color.FromArgb("#FFF8E1"),
			P100 = Color.FromArgb("#FFECB3"),
			P200 = Color.FromArgb("#FFE082"),
			P300 = Color.FromArgb("#FFD54F"),
			P400 = Color.FromArgb("#FFCA28"),
			P500 = Color.FromArgb("#FFC107"),
			P600 = Color.FromArgb("#FFB300"),
			P700 = Color.FromArgb("#FFA000"),
			P800 = Color.FromArgb("#FF8F00"),
			P900 = Color.FromArgb("#FF6F00"),
			A100 = Color.FromArgb("#FFE57F"),
			A200 = Color.FromArgb("#FFD740"),
			A400 = Color.FromArgb("#FFC400"),
			A700 = Color.FromArgb("#FFAB00"),
			PD50 = Colors.Black,
			PD100 = Colors.Black,
			PD200 = Colors.Black,
			PD300 = Colors.Black,
			PD400 = Colors.Black,
			PD500 = Colors.Black,
			PD600 = Colors.Black,
			PD700 = Colors.Black,
			PD800 = Colors.Black,
			PD900 = Colors.Black,
			AD100 = Colors.Black,
			AD200 = Colors.Black,
			AD400 = Colors.Black,
			AD700 = Colors.Black,
		};

		public static ColorPalette Orange { get; } = new ColorPalette
		{
			Name = "Orange",
			P50 = Color.FromArgb("#FFF3E0"),
			P100 = Color.FromArgb("#FFE0B2"),
			P200 = Color.FromArgb("#FFCC80"),
			P300 = Color.FromArgb("#FFB74D"),
			P400 = Color.FromArgb("#FFA726"),
			P500 = Color.FromArgb("#FF9800"),
			P600 = Color.FromArgb("#FB8C00"),
			P700 = Color.FromArgb("#F57C00"),
			P800 = Color.FromArgb("#EF6C00"),
			P900 = Color.FromArgb("#E65100"),
			A100 = Color.FromArgb("#FFD180"),
			A200 = Color.FromArgb("#FFAB40"),
			A400 = Color.FromArgb("#FF9100"),
			A700 = Color.FromArgb("#FF6D00"),
			PD50 = Colors.Black,
			PD100 = Colors.Black,
			PD200 = Colors.Black,
			PD300 = Colors.Black,
			PD400 = Colors.Black,
			PD500 = Colors.Black,
			PD600 = Colors.Black,
			PD700 = Colors.Black,
			PD800 = Colors.Black,
			PD900 = Colors.White,
			AD100 = Colors.Black,
			AD200 = Colors.Black,
			AD400 = Colors.Black,
			AD700 = Colors.Black,
		};

		public static ColorPalette DeepOrange { get; } = new ColorPalette
		{
			Name = "Deep Orange",
			P50 = Color.FromArgb("#FBE9E7"),
			P100 = Color.FromArgb("#FFCCBC"),
			P200 = Color.FromArgb("#FFAB91"),
			P300 = Color.FromArgb("#FF8A65"),
			P400 = Color.FromArgb("#FF7043"),
			P500 = Color.FromArgb("#FF5722"),
			P600 = Color.FromArgb("#F4511E"),
			P700 = Color.FromArgb("#E64A19"),
			P800 = Color.FromArgb("#D84315"),
			P900 = Color.FromArgb("#BF360C"),
			A100 = Color.FromArgb("#FF9E80"),
			A200 = Color.FromArgb("#FF6E40"),
			A400 = Color.FromArgb("#FF3D00"),
			A700 = Color.FromArgb("#DD2C00"),
			PD50 = Colors.Black,
			PD100 = Colors.Black,
			PD200 = Colors.Black,
			PD300 = Colors.Black,
			PD400 = Colors.Black,
			PD500 = Colors.Black,
			PD600 = Colors.White,
			PD700 = Colors.White,
			PD800 = Colors.White,
			PD900 = Colors.White,
			AD100 = Colors.Black,
			AD200 = Colors.Black,
			AD400 = Colors.White,
			AD700 = Colors.White,
		};

	}
}
